perm filename DDVID.SAI[2,DBL] blob sn#007814 filedate 1973-01-29 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00004 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	BEGIN "DDVID"
 00004 00003	FORTRAN REAL PROCEDURE ALOG(REAL X)
 00006 00004	PICTURE PIC,CPIC[0:PICMAX]
 00007 ENDMK
⊗;
BEGIN "DDVID"

REQUIRE "PROLOG.HDR[1,PDQ]" SOURCE_FILE;
REQUIRE "DDSUBS.HDR[1,PDQ]" SOURCE_FILE;
REQUIRE 5000 STRING_SPACE;

FORTRAN REAL PROCEDURE ALOG(REAL X);

PROCEDURE LOGPIC(PICTURE PIC);
BEGIN
REAL A,B,K,LB;
INTEGER I,J,PTI,SIZX,SIZY,SIZL,SAMAX;
INTEGER_ARRAY CTAB[0:SAMAX←1 LSH PIC[BIT] -1];

A←PSCALE/PIC[GAIN];B←PIC[OFFSET]/PSCALE;
LB←ALOG(A+B);
K←SAMAX/(ALOG(SAMAX*A+B)-LB);

FOR I←1 STEP 1 UNTIL SAMAX DO
 CTAB[I]←K*(ALOG(A*I+B)-LB);

PIC[GAIN]←K*PSCALE;PIC[OFFSET]←LB*PSCALE;
PTI←PIC[PTR];SIZX←PIC[SIZEX];SIZY←PIC[SIZEY];SIZL←PIC[SIZEL];
FOR J←1 STEP 1 UNTIL PIC[SIZEY] DO
BEGIN
 START_CODE
   DEFINE PT="1",A="2",I="3";
   LABEL L,LC;
   MOVE I,SIZX;MOVE PT,PTI;
   MOVE A,CTAB;HRRM A,LC;
L: ILDB A,PT;
LC:MOVE A,(A);DPB A,PT;SOJG I,L;
 END;
 PTI←PTI+PIC[SIZEL];
 END;
END "LOGPIC";
PICTURE PIC,CPIC[0:PICMAX];
INTEGER ARRAY PARS[1:14];
DDVID(PIC,CPIC,NULL,PARS);
END;